package com.navinfo.platform.bigdata.hive.udf;

import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 获取num第index位bit值的字符串
 */
@Description(name = "status",
        value = "_FUNC_(num, index) - returns the index bit value of num",
        extended = "Example:\n   " +
                "> SELECT _FUNC_(11, 0) FROM src;\n"+
                "> SELECT _FUNC_(\"11\", 0) FROM src;"
)
public class UreaAbnormalUDF extends UDF {
    /**
     * 获取num第index位的bit值
     * @param level_list
     * @param gap
     * @return
     */
    public int evaluate(ArrayList<Integer> level_list,ArrayList<Integer> time_list, int gap) {
        int abnormal = 1;
        int count = 0;
        for(int i=0;i<level_list.size();i++){
            if (time_list.get(i)-time_list.get(0)<=120){
                if (level_list.get(i)>=level_list.get(0)-gap){
                    abnormal = 0;
                }else{
                    count++;
                }
            }
        }
        if (abnormal == 1 && count>0){
            return 1;
        }else{
            return 0;
        }

    }
//    /**
//     * 获取num第index位的bit值
//     * @param num
//     * @param index
//     * @return
//     */
//    public Text evaluate(LongWritable num, IntWritable index) {
//        if (!checkData(num, index)) {
//            return new Text("0");
//        }
//        return new Text(getToBinary(num.get(), index.get())+"");
//    }
//    /**
//     * 获取num第index位的bit值
//     * @param num
//     * @param index
//     * @return
//     */
//    public Text evaluate(IntWritable num, IntWritable index) {
//        if (!checkData(num, index)) {
//            return new Text("0");
//        }
//        return new Text(getToBinary(num.get(), index.get())+"");
//    }



}
